package com.ww.springboot.boot.baseTest.hashcode;

/**
 * 描述：
 *
 * @author 🧑 ‍wanwei
 * @since 2025-01-21 09:13
 */
public class Demo1 {


    public static void main(String[] args) {
        //字符串的hashcode 是固定值
//        System.out.println("1".hashCode());
//        System.out.println("2".hashCode());
//        System.out.println("11".hashCode());
//        System.out.println("12".hashCode());
//        System.out.println("111".hashCode());
//        System.out.println("112".hashCode());
//        System.out.println("1111".hashCode());
//        System.out.println("1111".hashCode());
//        System.out.println("11111".hashCode());
//        System.out.println("11112".hashCode());
//        System.out.println("111111".hashCode());
//        System.out.println("111112".hashCode());
//        System.out.println("1111111".hashCode());
//        System.out.println("1111112".hashCode());
//        System.out.println("11111111".hashCode());
//        System.out.println("11111112".hashCode());
//        System.out.println("111111111".hashCode());
//        System.out.println("111111112".hashCode());

        //这个方法是一个本地方法（native），具体实现由 JVM 提供。通常，这个方法返回的是对象的内存地址的整数表示
        // 对象 hashcode 的值是固定的，但是每次启动 JVM 都会随机生成一个值，这个值是唯一的，并且是固定的。
        // 基于内存地址：默认的 hashCode 方法返回的是对象的内存地址的整数表示。
        //不保证唯一性：虽然内存地址通常是唯一的，但在某些情况下（如对象被垃圾回收后重新分配相同的内存地址），可能会出现哈希冲突。
        //一致性：对于同一个对象，多次调用 hashCode 方法应返回相同的值，前提是对象的状态没有改变
        //不同对象的hashcode 如果对象没有被回收
        // 字符串的hashcode很可能会重复 但是再将字符串拼接一个相同的字符生成的新的字符 基本上不可能重复
        Object o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());
        o = new Object();
        System.out.println(o.hashCode());

    }
}
